Residual entropy compression for cloud-based video applications

ABSTRACT

Residual vectors are compressed in a lossless compression scheme suitable for cloud DVR video content applications. Thus, a cloud DVR service provider can take many copies of the same file stored in the cloud and save storage space by compressing those copies while still maintaining their status as distinct copies, one per user. Vector quantization is used for compressing already-compressed video streams (e.g., MPEG streams). As vector quantization is a lossy compression scheme, the residual vector has to be stored to regenerate the original video stream at the decoding (playback) node. Entropy coding schemes like Arithmetic or Huffman coding can be used to compress the residual vectors. Additional strategies can be implemented to further optimize this residual compression. In some embodiments, the techniques operate to provide a 25-50% improvement in compression. Storage space is thus more efficiently used and video transmission may be faster in some cases.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.16/020,018 (filed 27 Jun. 2018), which is a continuation of U.S. patentapplication Ser. No. 14/964,715 (filed 10 Dec. 2015). The entiredisclosure of both of these priority applications is hereby incorporatedby reference herein.

FIELD OF THE DISCLOSURE

This disclosure relates to techniques for video processing, and moreparticularly, to techniques for carrying out optimized coding andstorage of compressed video content.

BACKGROUND

In general, data compression reduces the size of a digital file. Acompression algorithm typically makes the digital file smaller byrepresenting strings of bits (i.e., logical is and Os), which make upthe digital file, with smaller strings of bits by using a dictionary, orso-called codebook. This reduction typically happens at the encodingstage prior to transmission or storage. So, when such a reduced-sizestring is received at the decoding stage for playback, the decodingalgorithm uses the codebook to reconstruct the original content from thecompressed representation generated by the encoding algorithm. Whetherthe reconstructed content is an exact match of the original content oran approximation thereof depends on the type of compression employed.Lossless compression algorithms allow the original content to bereconstructed exactly from the compressed message, while lossycompression algorithms only allow for an approximation of the originalmessage to be reconstructed. Lossless compression algorithms aretypically used where data loss of original content is problematic (suchas the case with executable files, text files, and digital data fileswhere loss of even a single bit may actually change the meaning of thecontent). Lossy compression algorithms are typically used for images,audio, video, and other such digital files where a degree of intentionaldata loss is imperceptible or otherwise at an acceptable level. Withrespect to lossy compression, note that the bit loss is not random;rather, the loss is purposeful (bits representing imperceptible sound orvisual distinctions or noise can be targeted for exclusion by the lossycompression algorithm).

Data compression is commonly used in applications where the storagespace or bandwidth of a transmission path is constrained. For example,images and video transmitted via a communication network such as theInternet are typically compressed. One such example case is theso-called “cloud DVR” service, which allows for streaming of compresseddigital video content from a remote digital video recorder to a user'splayback device, such as a television, desktop or laptop computer,tablet, smartphone, or other such playback device. A standardcompression scheme for streamed video is MPEG compression, althoughthere are numerous other compression standards that can be used. In anycase, because the content is stored in the cloud-based DVR, the userdoesn't need to have the content maintained in a storage local to theplayback device. As will be further appreciated, because compressionmakes the given digital file smaller (i.e., fewer bits), that file canbe stored using less memory space and transmitted faster, relative tostoring and transmitting that file in its uncompressed state. However,there are a number of non-trivial problems associated with cloud-basedDVR services. One such problem is related to the legal requirement thateach user's recordings stored in the cloud DVR must be a distinct copyassociated with that user only. In another words, even though multipleusers have recorded the same program (some piece of digital content),the cloud DVR service provider is required to save a single copy of thatprogram for each of those users. Thus, a storage-conserving techniquesuch as data deduplication, which avoids content storage redundancy byleveraging a common copy of content that is accessible to all users byoperation of a pointer-based system, is unacceptable where the one copyper user requirement applies. This requirement of a single copy per useris based in copyright laws related to the right of an individual tolegally record content for purpose of time-shifting the personal viewingof that content. Thus, even with compression schemes in place, a contentservice provider that is tasked with providing the same content item tomultiple users may still be constrained from a storage perspective.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 a illustrates block diagram of an encoder configured inaccordance with an embodiment of the present disclosure.

FIG. 1 b illustrates block diagram of a decoder configured in accordancewith an embodiment of the present disclosure.

FIG. 1 c illustrates example metadata that can be stored for a givenoptimized residual (which may be collected before entropy coding and/orafter entropy coding), in accordance with an embodiment of the presentdisclosure.

FIG. 1 d illustrates an example codebook.

FIG. 2 a illustrates example process flow on a content encoder, inaccordance with an embodiment of the present disclosure.

FIG. 2 b illustrates example process flow on a content decoder, inaccordance with an embodiment of the present disclosure.

FIG. 3 a is a flowchart illustrating a method for encoding digital videocontent in accordance with an embodiment of the present disclosure.

FIG. 3 b is a flowchart illustrating a method for vector-wise Huffmanencoding a residual vector in accordance with an embodiment of thepresent disclosure.

FIG. 3 c is a flowchart illustrating a method for element-wise Huffmanencoding a residual vector in accordance with an embodiment of thepresent disclosure.

FIG. 4 a is a table illustrating encoding of an example input vector inaccordance with an embodiment of the present disclosure.

FIG. 4 b illustrates a table that can be used for encoding a residualwith vector-wise Huffman encoding in accordance with an embodiment ofthe present disclosure.

FIG. 4 c illustrates a table that can be used for encoding a residualwith vector-wise non-prefix Huffman encoding in accordance with anembodiment of the present disclosure.

FIG. 4 d illustrates a table that can be used for encoding a residualwith element-wise non-prefix Huffman encoding in accordance with anembodiment of the present disclosure.

FIG. 5 is a block diagram illustrating an example video contentstreaming system configured in accordance with an embodiment of thepresent disclosure.

DETAILED DESCRIPTION

Techniques are disclosed for carrying out optimized coding of compressedvideo content. Once coded, the content can be more efficiently stored(i.e., use less storage space). Given this storage efficiency, thetechniques are particularly helpful in storage-intensive applications,such as those where content storage is subject to a one copy per userrequirement. In accordance with an embodiment, the techniques includevectorization of a given compressed video stream by breaking the streaminto smaller chunks of is and Os (i.e., vectors). This vectorizationprocess is followed by codebook-based vector quantization to generateresidual vectors. As is known, the vector quantization process involvescomparing the input vectors to vectors of a given codebook. As isfurther known, the more representative the codebook is of the inputvectors, the smaller the residual vectors will tend to be (i.e., aresidual vector represents a mathematical difference between a giveninput vector and the most similar codebook vector). Elements, alsoreferred to as dimensions, of a given residual vector having a zerovalue are then removed or otherwise ignored, thereby optimizing theresidual vector by making it smaller. Each optimized residual vector isthen entropy coded (e.g., Huffman coded or Arithmetic coded). The resultof the entropy encoding process is encoded optimized media data, whichcan be stored using less memory, and in some cases, may be subsequentlystreamed more rapidly to the user for playback. In addition, metadataknowable from the encoding process is collected and stored separatelyfrom the encoded optimized media data. The metadata identifies orotherwise includes data that facilitates decoding of the encodedoptimized media. In one embodiment, for instance, the metadataidentifies the total number of dimensions in the un-optimized residualvector and the length of each non-zero dimension, along with other datauseful in the decoding process, such as the length of the correspondingcodebook index, the total length of the residual vector (including alldimensions, both zeros and non-zeros), the codebook identifier (assumingthere is more than one codebook), and the sign of the residual vectorelements. As will be appreciated in light of this disclosure, not allsuch metadata is needed; rather, only metadata needed to facilitatedecoding need be logged, which can vary from one embodiment to the next.To this end, the listing of example metadata here is not intended tolimit the present disclosure to an embodiment that includes all suchmetadata; rather, other embodiments may include any piece or combinationof such metadata, so long as space saving encoding/decoding as variouslyprovided herein can be achieved. As will be further appreciated in lightof this disclosure, such metadata allows the entropy coding to becarried out using fewer bits, especially when the vector codebook is aclose representation of the digital content being coded and thereforecauses a high number of zero dimensions in the residual vectors. Hence agreater degree of lossless compression can be achieved. As such, acontent provider can save more storage space, which is particularlyhelpful to providers subject to the one copy per user requirement.Further note that, while the encoded optimized media data can bereplicated and stored for each user as may be required by governingauthorities (such that each user is associated with a distinct copy ofthe media portion of the video content), only a single common copy ofthe metadata portion is needed. In addition, in some example embodimentswhere compressed residuals are actually transmitted to the playbacknode, a content provider may be able to stream that content faster. Insuch example embodiments, the requisite codebook and metadata can beprovided to the playback node (either in advance, or contemporaneouslywith encoded compressed video stream) to facilitate the decodingprocess. In other example embodiments, however, decoding is carried outat the transmitting node, such that the stream transmitted to theplayback node is the original decoded compressed video stream (orrelatively close representation thereof). In contrast, existingsolutions might stream slower or otherwise take longer to deliverstandard compressed video content.

System Architecture

FIG. 1 a illustrates block diagram of an encoder 100 configured inaccordance with an embodiment of the present disclosure. As can be seen,the encoder 100 includes a vectorizer 101, a vector quantization encoder103 and codebook 105, and a residual encoder 107. The vectorquantization (VQ) encoder 103 includes a residual generator 103a. At ahigh level, the encoder 100 is configured to receive a compressed videostream and to output media data 108 that generally includes encodedoptimized residuals and corresponding codebook indexes. This output canbe stored for multiple users, such that there is one distinct copy ofmedia data 108 per user. In some embodiments, only a portion of themedia data 108 is subject to the one copy per user requirement. Forinstance, in one example such case only the codebook index is storedmultiple times (one distinct copy per user) and the optimized residualis only stored once. Other variations of a one copy per user scheme thatmay be compliant with the relevant applicable standards and legalrequirements can be used as well. In addition, the encoder 100 alsoprovides metadata 109 which can be stored as a single copy, along withthe codebook 105, so that they are available for decoding the optimizedresiduals prior to transmission or at the playback node, as will beexplained in turn. Other embodiments may be configured differently butstill provide a similar functionality. For instance, in anotherembodiment, the vectorizer 101 may be integrated with the VQ-encoder103. Likewise, the residual encoder 107 may be integrated with theVQ-encoder 103. The degree of integration can vary from one embodimentto the next. Further note that, in some embodiments, encoding can takeplace on a transmitting (content provider) node and decoding can takeplace on the receiving (playback) node, such that an encoded compressedvideo stream is transmitted. Alternatively, encoding and decoding bothtake place at the transmitting node, so that a normal (not encoded)compressed video stream is transmitted. Numerous variations will beapparent and the present disclosure is not intended to be limited to anyparticular one.

The vectorizer 101 can be implemented using standard vectorizationtechnology. In one example embodiment, vectorizer 101 is configured toreceive an MPEG-compressed video stream and to divide that stream upinto discrete vectors having a known length. As will be appreciated,MPEG compression is used herein in a generic fashion, and is intended toinclude all typical use cases, including those where the audio and videoof a given media file is compressed by one of the standards that theMoving Picture Experts Group (MPEG) has promulgated (such as MPEG-1,MPEG-2, or MPEG-4) and multiplexed using the MPEG-2 transport streamstandard. However, as will be further appreciated in light of thisdisclosure, any ISO (International Organization for Standardization) orITU (International Telecommunication Union) standard, or other suchstandards, can be used instead of MPEG and the stream may or may not bemultiplexed. So, in a more general sense, the vectorizer 101 can beconfigured to receive any type of compressed video stream, regardless ofthe compression standard used.

The vectorization can be carried out at any resolution, and generallydepends on the desired number of elements or so-called dimensions pervector. In some example embodiments, each vector includes ten to twentydimensions or elements, with one specific embodiment having elevendimensions per vector. FIG. 2 a visually depicts this vectorizationprocess, showing a continuous compressed video stream processed into aset of discrete sequential vectors. As can further be seen, each vectorcan be treated as a separate and distinct source file. As will beexplained in turn, these source files are processed through the encoder100, using vector quantization and optimized residual entropy coding.

The vectors or source files generated by the vectorizer 101 are providedto the VQ-encoder 103, which carries out the vector quantization processon those vectors/source files. Vector quantization is a lossycompression scheme used to encode/decode MPEG video streams, and isgenerally implemented by mapping input vectors from a givenmultidimensional input space into a smaller dimensional subspace using aset of representative code vectors maintained as a codebook. Such avector codebook can be trained to improve its representativeness of thedigital content being compressed. Thus, by virtue of encoding valuesfrom a multidimensional vector space into a finite set of values of adiscrete subspace of lower dimension, the vector quantization processcarried out by the VQ-encoder 103 allows for a relatively large data setto be fairly well represented by a smaller data set and hencecompression is achieved. So, with further reference to FIGS. 1 a and 2a, the VQ-encoder 103 identifies the closest representative codebookvector in the given codebook 105 (by way of Euclidean norms of thevectors being compared, or other suitable vector comparison technique).The difference between that selected codebook vector and the inputvector (from vectorizer 101) is generated by the residual generator103a, and this difference is referred to as a residual vector or file.The residual vector/file can then be stored or otherwise made availablefor subsequent processing. This subsequent process generally includesoptimizing and entropy coding the residual vector to further increasecompression, as will be explained in turn. Further note that the indexof the corresponding representative codebook vector selected fromcodebook 105, used to generate that residual vector, can be stored aswell. This will allow for retrieval of the same codebook vector from thecodebook 105, when decoding is carried out.

The codebook 105 can be implemented as conventionally done. In someembodiments, codebook 105 is static in nature, such that it ispreviously trained on a relevant set of content channels of the contentprovider and then deployed for use by the encoder 100 (and decoder 110).In other embodiments, the codebook 105 may be more dynamic in naturewhere training and refining of the codebook representative code vectorsis ongoing. An example codebook 105 is shown FIG. 1 d . Note the size(and hence, resolution) of the codebook can vary greatly from oneembodiment to the next. In a general sense, the greater the resolutionof the codebook 105 (i.e., the higher the number of distinct indexedcodebook vectors), the greater the representativeness of the targetedmultidimensional space (video content library of service provider) beingsubjected to vector quantization. The greater the representativeness ofthe targeted multidimensional space, the smaller in value the residualvectors will be. Said differently, the more representative a givencodebook vector is of a given input vector, the lower the number ofnon-zero dimensions is in the resulting residual vector. The lower thenumber of non-zero dimensions in the resulting residual vector, thegreater the degree of compression that can be applied to that residual(by zero removal and entropy coding).

Once the residual vector for a given input vector or source file iscomputed by the VC-encoder 103, that residual vector and correspondingcodebook vector index are provided to the residual encoder 107, as shownin FIG. 1a. In other embodiments, note that the residual encoder 107need not receive the codebook vector indexes, such as the example caseshown in FIG. 2 a . In any case, the residual encoder 107 can implementany number of entropy coding schemes, such as Arithmetic or Huffmancoding, to compress the residual vectors. The reference to entropyrefers to the notion that the residual vectors tend to have lowerentropy than the original vectors received in the vectorized compressedvideo stream (from vectorizer 101), because logical 0 s and low valuedimensions tend to have high probabilities and high dimension valuestend to have low probabilities. Thus, each residual vector (sometimesreferred to as a residual file, as shown in FIG. 2 a ) received from theVQ-encoder 103 is evaluated by the residual encoder 107 for metadata andthen optimized prior to entropy coding that residual vector.

In particular, metadata 109 associated with the given residual vector isidentified and logged by the residual encoder 107. Thus, that metadata109 can subsequently be made available to the decoding process. As willbe appreciated in light of this disclosure, having the metadata 109available in this way allows the entropy coding scheme to be simplified,according to some embodiments. As previously indicated, only a singlecopy of metadata 109 is needed. FIG. 1 c shows an example set ofmetadata 109, according to one embodiment. As can be seen, the metadata109 in this example set includes or otherwise provides a basis fordetermining: length of the codebook index corresponding to therepresentative codebook vector; length of the residual vector(un-optimized); number of dimensions in the residual vector(un-optimized); length of each non-zero dimension of the residualvector; location of each non-zero dimension of the residual vector(location within the overall vector); the sign of each dimension in theresidual vector, and the codebook identity (ID).

A zero removal process by the residual encoder 107 provides an optimizedresidual vector. So, for instance, given a residual vector of {4 1 0 0 05 0 0 1 −2 0} from VQ-encoder 103, the optimized version of thatresidual vector would be {4 1 5 1 −2}. As further indicated in FIG. 1 c,the metadata 109 may also (or alternatively) include data about theoptimized residual vector, such as the length of the residual vector(optimized). As previously explained, other embodiments may includefewer pieces of metadata 109, such as only the number of dimensions inthe residual vector (un-optimized) and the length and location of eachnon-zero dimension of the residual vector, assuming the other notedpieces of metadata 109 are either determinable or are otherwise notapplicable or needed for decoding. For instance, in some embodiments,the dimension sign may not be applicable if only one polarity is used;similarly, if only one codebook is used, then codebook ID is notnecessary; likewise, if the applicable codebook indexes are all the samesize or otherwise known from the codebook, then length of the codebookindex is not necessary (rather, it is already known); likewise, notethat there is no need to actually store the location of the non-zerodimensions if the length of the zero dimensions is stored in themetadata 109 as a zero (in such cases, the metadata effectively includesthe length of each dimension of the coded optimized residual vector,including both zero and non-zero dimensions, and hence the location ofeach type is determinable); likewise, metadata about the un-optimizedresidual may not be needed in some embodiments (such as the case wherethe metadata includes the length of the optimized residual vector ratherthan the length of the un-optimized residual vector). In still furtherspecific embodiments employing a prefix-free entropy coding scheme (aswill be explained in turn with reference to FIGS. 4 c-d ), only thelength of the dimensions and/or overall length of the entropy codedresiduals are stored as metadata 109, and the residual lengths perdimension (before entropy encoding) and lengths of the un-optimizedresidual vector are not stored as metadata. Numerous variations will beapparent in light of this disclosure, and metadata 109 can be reduced,supplemented, or modified so that it includes any metadata needed toachieve an optimized coding scheme as provided herein. The optimizedresidual vector can be entropy encoded in various ways, as will bediscussed in more detail in turn.

The entropy coding scheme executed by the residual encoder 107 can varyfrom one embodiment to the next. Examples include Arithmetic coding andHuffman coding. However, because metadata 109 is stored and madeavailable to the decoding process, the entropy coding scheme can beoptimized and the coding tables can be smaller. So, for instance, andcontinuing with the previous example residual vector of {4 1 0 0 0 5 0 01 −2 0}, the optimized version of that residual vector would be {4 1 5 1−2}. Applying decimal-to-binary conversion, the resulting optimizedresidual would be {100 1 101 1 10}. The dimension signs and lengths canbe recorded into metadata 109. In some embodiments, this binary value{100 1 101 1 10} can then be used as an index or key into a Huffmantable to find the corresponding Huffman code. Alternatively, each of thefive dimensions can be treated as five input symbols presented forstandard Arithmetic coding. Additional details of example entropy codingschemes will be further discussed with reference to FIGS. 3 a-c and 4 a-d. In any case, the output of the residual encoder 107 (and hence theoutput of the encoder 100) includes media data 108 and metadata 109.

As further indicated in FIG. 1 a, the metadata 109 and other non-mediadata such as codebook 105 can be stored as a single common copy. Incontrast, the media data 108 can be replicated so as to satisfy the onecopy per user requirement, if applicable. Recall, the media data 108generally includes the codebook indexes and the encoded optimizedresiduals. Further recall, however, that not all media data 108 may needto be subjected to the one copy per user requirement, depending onapplicable standards and legal requirements. For instance, as furthershown in the example embodiment of FIG. 2 a , only the codebook indexesare stored under the one copy per user regime, and the correspondingencoded optimized residual is only stored once. Other such variationstargeting compliance with a set of rules will be apparent in light ofthis disclosure.

FIG. 1 b illustrates block diagram of a decoder 110 configured inaccordance with an embodiment of the present disclosure. As will beappreciated, the decoder 110 provides functionality that iscomplementary to the encoder 100, and to this end discussion withrespect to decoding is kept concise and the previous relevant discussionregarding the encoder 100 is equally applicable here. As can be seen inFIG. 1 b, the decoder 110 includes a residual decoder 111 (complementaryto residual encoder 107), a vector quantization (VQ) decoder 113(complementary to VQ-encoder 103) and codebook 105 (which is the same),and a reorderer 115 (complementary to vectorizer 101). The VQ-decoder113 includes a vector generator 113 a (complementary to residualgenerator 103a). Further note that the decoder 110 may actually be onthe same node as the encoder 100, such as in applications where thecompression techniques provided herein are being used to improve storageefficiency rather than transmission speed. However, in otherembodiments, the decoder 110 can be implemented at a receiving noderemote to the transmitting node, such that storage efficiency at thetransmitting node as well as faster transmission speed from thetransmitting node to the receiving node may be achieved if so desired.

At a high level, the decoder 110 is configured to receive media data 108that generally includes encoded optimized residuals and correspondingcodebook indexes, and to output a compressed video stream suitable forplayback. The received media data 108 is for a specific user, such thatthere is one distinct copy of media data 108 per user. However, and aspreviously explained, in some embodiments, only a portion of the mediadata 108 is subject to the one copy per user requirement (e.g., thecodebook index may be stored multiple times, once per user, and theoptimized residual is only stored once). As can be further seen, thedecoder 110 also receives metadata 109 which as previously explained canbe stored as a single copy, along with the codebook 105, so that it isavailable for decoding the optimized residuals. So, for instance, let'scontinue with the previous example optimized residual of {100 1 101 110} that was generated by the encoder 100, as previously explained.Using the metadata 109, the residual decoder 111 decodes the encodedversion of this optimized residual to {4 1 5 1 −2} in accordance withthe given entropy coding scheme (and binary-to-decimal conversion, inthis example case). In this case, the metadata could indicate thedimensions having a negative polarity. Also known from the metadata 109,according to an embodiment, is the total number of dimensions of theresidual vector, as well as the length and location of non-zerodimensions of the residual vector. Thus, with this information in hand,the residual decoder 111 further decodes {4 1 5 1 −2} to {4 1 0 0 0 5 00 1 −2 0}, which is the original residual vector. Once the correspondingcodebook vector is retrieved using the given codebook index, the vectorgenerator 113 a of the VQ-decoder 113 recovers the original vector (or arelatively close representation of that original vector) by adding theoriginal residual vector to the retrieved codebook vector. The recoveredvectors are provided by the VQ-decoder 113 to the reorderer 115 whichoperates to combine the sequential vectors to form the originalcompressed video stream (or a relatively close representation thereof).The reorderer 115 can be implemented using standard vector-to-streamtechnology. In one example embodiment, reorderer 115 is configured toreceive a stream of discrete vectors having a known length and tocombine those vectors into an MPEG-compressed video stream, althoughother compression standards can be used as well.

FIG. 2 b visually depicts one such decoding process, according to anexample embodiment. As can be seen, the encoded optimized residual fileis received at the residual decoder 111, along with metadata 109, andthe residual file or vector is recovered. Note that the residual decoder111 need not receive the codebook vector index files. In any case, theresidual decoder 111 can implement any number of entropy decodingschemes, such as Arithmetic or Huffman coding, to complement theencoding scheme of residual encoder 107. The residual file recovered bythe residual decoder 111 is then provided to the VQ-decoder 113, alongwith the corresponding codebook index files and codebook 105. Theoriginal vector or source file (or something relatively close to theoriginal vector or source file) is thus recovered by the VQ-decoder andprovided to the reorderer 115, which carries out vector-to-streamprocessing. Note that decoding can be done at the content provider node,prior to streaming the compressed video stream over the communicationnetwork, as shown in FIG. 2 b . However, in other embodiments, decodingcan be carried out at the content consumer node, after streaming theencoded optimized residual files and index files to the appropriateuser. In such a case, note that only the target user's selected videocontent would be transmitted to that user and subsequently decoded bythat user's decoder, as will be appreciated.

As will be further appreciated in light of this disclosure, the variousmodules and components of the encoder 100 and decoder 110, such as thevectorizer 101 and reorderer 115, VQ-encoder 103 and VQ-decoder 113, andresidual encoder 107 and residual decoder 111, can be implemented insoftware, such as a set of instructions (e.g. C, C++, object-oriented C,JavaScript, BASIC, etc.) encoded on one or more non-transitory computerreadable mediums (e.g., hard drive, solid-state storage, server, orother suitable physical memory), that when executed by one or moreprocessors, cause the various methodologies provided herein to becarried out. A computer program product may include any number of suchcomputer readable mediums, and may be distributed in nature. Forinstance, functional modules of the encoder 100 can be implemented on acloud-based server or other suitable computing environment, and thefunctional modules of the decoder 110 can be implemented on aclient-based computing device or suitable playback platform (e.g.,television, laptop, projection system, smartphone, tablet, desktop,etc.). In other embodiments, the components/modules may be implementedwith hardware, such as gate level logic (e.g., FPGAs) or a purpose-builtsemiconductor (e.g., ASICs), which may also be distributed in someembodiments. Still other embodiments may be implemented with one or moremicrocontrollers (distributed or not) each having a number ofinput/output ports for receiving and outputting data and a numberembedded routines for carrying out the functionality described herein.Any suitable combination of hardware, software, and firmware can beused.

Methodology

FIG. 3 a is a flowchart illustrating a method for encoding digital videocontent in accordance with an embodiment of the present disclosure. Ascan be seen, the method is described with reference to the encoder 100of FIG. 1 . However, any number of encoder configurations can be used toimplement the method, as will be appreciated in light of thisdisclosure. Further note that the various functions depicted in themethod do not need to be assigned to the specific example modules shown.For instance, storing of metadata and media data at 309 and 311,respectively, may be carried out, for example, by a dedicated storingmodule or some other component that is separate and distinct from theresidual encoder 107 that carries out the entropy coding at 307. To thisend, the example methodology depicted is provided to give one exampleembodiment and is not intended to limit the methodology to anyparticular physical or structural configuration.

The method commences at 301 with receiving and vectorizing a compressedvideo stream. In one example case, the compressed video stream is anMPEG-compressed video stream, although any suitable compression standardcan be used that produces a compressed video stream that can bevectorized. The method continues at 303 with generating, by vectorquantization, a residual vector using a codebook. In one suchembodiment, such encoding or vector quantizing includes computing thedifference between the input vector and the chosen codebook vector, andstoring that difference value as the residual vector along with acodebook index of the chosen codebook vector. For purposes of decoding(which may occur at the transmitting node or the receiving node, aspreviously explained), the residual vectors are added back to thecodebook vector, which can be looked up or otherwise identified usingthe stored codebook index. Thus, according to one such embodiment, thepost-VQ encoded data is written as series of codebook indexes andresidual vectors. Note that when a representative codebook is used, thedistortion post-VQ (i.e., the residual vector values) are minimized orotherwise tend to be smaller. In other words, a codebook may beconsidered “representative” when the accuracy of the codebook is suchthat the given codebook vectors tend to be not much different from thegiven input vectors being subjected to VQ, which in turn yields residualvectors that tend to be smaller in value. In such a scenario, a majorityof the elements (or dimensions) making up a given residual vector tendto be zero with the remainder of the dimensions tending to be a lownumber. However, there are occasional high error magnitudes (i.e.,codebooks are generally not perfect, regardless of how well trained theyare). In any case, note that if all the residual vectors are padded tothe same size, the compression advantage of the VQ may be negated bylargely bloating the residual files.

Thus, the methodology continues at 305 with removing (or otherwiseignoring) zeros to create an optimized residual vector. The methodcontinues at 307 with entropy coding, by Arithmetic or Huffman coding,the optimized residual vector. In addition to the media data included inthe output of the methodology, and as will be further appreciated inlight of this disclosure, a good deal of metadata is readily apparent orotherwise self-describing and this metadata can be leveraged to furtheroptimize the entropy coding and decoding process. To this end, themethod further includes, at 309 and 311, storing metadata associatedwith the coded optimized residual vector, and storing media dataassociated with the coded optimized residual vector, respectively. Themethod continues at 311 with determining if there are more input vectorsto process, and if so, the methodology repeats at 303 as shown;otherwise, the method concludes.

Example Use Case

So, for purposes of providing an example process flow using themethodology of FIG. 3 a , further reference is made to the examplescenario shown in FIG. 4 a . As can be seen, an input vector of {0 2 0 01 3 2 0 1 3 0} is received at the VQ-encoder, and a most representativecodebook vector of {−4 1 0 0 1 −2 2 0 0 5 0} is chosen. Applying vectorquantization at 303, the resulting residual (or difference) vector is {41 0 0 0 5 0 0 1 −2 0}. Now, applying zero removal at 305, the resultingoptimized residual vector is {4 1 5 1 −2}, which translates in binary to{100 1 101 1 10}. Using entropy encoding at 307, the resulting encodedoptimized residual vector is generated. For instance, using Huffmancoding, {100 1 101 1 10} can be used as an index into a Huffman table toidentify the corresponding Huffman code. Alternatively, {100 1 101 1 10}can be used to generate a standard Arithmetic code. For purposes ofsimplicity, assume the encoded optimized residual vector is representedby {100 1 101 1 10}. Thus, in this example case, the media data includesthe encoded optimized residual vector of {100 1 101 1 10}, along withthe index of the chosen representative codebook vector (which is knownfrom the codebook) and is {0 1 1 1 1 0 1 1 1 1 1 0} in this examplecase. Further examples of how a given optimized residual vector may beencoded are provided with respect to FIGS. 4 b -d.

As can be further seen from the example scenario depicted in FIG. 4 a ,a robust set metadata is known or otherwise readily determinable and canbe stored in a single common copy and made available to the decodingprocess, thereby allowing encoding optimizations to be made, aspreviously explained. As will be appreciated in light of thisdisclosure, the metadata that is stored and used can vary from oneembodiment to the next, and the example set depicted in FIG. 4 a is notintended to imply that every embodiment must include all the depictedmetadata. Clearly, this is not the case, and a subset of the depictedmetadata can be just as effective, as will be further appreciated inlight of this disclosure. Depending on the encoding schemes used, othertypes of metadata that can be exploited to optimize the encoding anddecoding processes (and the compression achieved) will be apparent. Forinstance, as previously explained, in some embodiments, the metadataneed not include any residual length (before entropy encoding) perdimension or length for the overall vector. Likewise, the metadata neednot include location of the non-zero elements if the length of the zeroelements is stored as zero, meaning that all dimension lengths of theoptimized residual (or encoded optimized residual, as the case may be)are determinable, including both zeros and non-zeros, such as shown inFIG. 4 a . Likewise, the metadata need not include any length data forthe un-optimized residual vectors.

In any case, with further reference to FIG. 4 a , the metadata of thisexample case includes the length of each non-zero dimension of theencoded optimized residual vector, as well as the location of each thosenon-zero dimensions within the overall (un-optimized) vector and thetotal number of dimensions in the overall (un-optimized) residual (whichis known from the codebook vector dimension, for instance). So,continuing with the previous example scenario, the overall(un-optimized) encoded residual vector includes a total of elevendimensions, six of which are zeros at positions 3, 4, 5, 7, 8, and 11,and the remaining five dimensions at positions 1, 2, 6, 9, and 10 arenon-zeros of {100 1 101 1 10} having respective lengths of 3, 1, 3, 1,and 2 (i.e., the length is measured in bits in this example). Inaddition, the length recorded for each of the zero dimensions isrecorded as 0. Because each zero and non-zero dimension of the overall(un-optimized) encoded residual vector are represented in the dimensionlength metadata, the location of each dimension within the overall(un-optimized) encoded residual vector is also known from the storedmetadata. As will be appreciated, one benefit of knowing these locationsand lengths is that no code prefix restriction is needed (where no onecode can be the prefix of another code, to ensure proper decoding). Ascan be further seen in FIG. 4 a , the metadata also includes the sign ofeach non-zero dimension, which in this example case, indicates that thedimension at the penultimate position of the overall (un-optimized) isnegative. The codebook ID (CB-77, in this example case) is also knownand included in the stored metadata. This ID can be used, for example,to recall the correct codebook during the decoding process, assumingthere are multiple codebooks available. In addition, the codebook indexlength is known and can be stored with the metadata, and is twelve bitsin this example case; however, given that this codebook index length isknown from the codebook itself, it need not be included in the metadata.Also known and saved with the metadata are the lengths of the residualvector in both its un-optimized and optimized forms, and in this exampleembodiment are sixteen bits and ten bits, respectively. Otherembodiments need not include the metadata describing the un-optimizedforms. Knowing such index lengths and residual vector lengths ishelpful, for instance, because it can be used to simplify thetransmission of the media data. For instance, the code vector indexes ofthe media data can be run together without any further structure so asto provide a continuous large string that can then be decoded back intoits constituent parts using the known lengths of the individual indexesmaking up the large string. In a similar fashion, the encoded optimizedresidual vectors of the media data can be run together without anyfurther structure so as to provide a continuous large string that canthen be decoded back into its constituent parts using the known lengthsof the individual residual vectors making up that large string. Notethat the beginning of the first index of the continuous string can beidentified or otherwise indicated, for example, by a start flag orfield, or other indicia marking the start of the given string.

A number of additional benefits attributable to recording metadata asprovided herein will be apparent in light of this disclosure. First, toexploit the low distortion or magnitude of the residual errors (lowdistortion generally refers to a relatively high occurrence ofdimensions having a zero value), the length of each dimension of theresidual vector can be signaled in the metadata. Consequentially, thedimensions with value 0 can be signaled with length 0 in the metadata,thereby saving one bit from the residual file of the media data (i.e.,for each 0 removed from the un-optimized residual vector, one bit iseliminated from the encoded optimized residual vector that is stored,one copy per user). For instance, and as previously explained, anun-optimized residual error vector of {4 1 0 0 0 5 0 0 1 −2 0} can berepresented as {100 1 101 1 10} (media data) and the lengths of eachdimension can be represented as {3 1 0 0 0 3 0 0 1 2 0} (metadata).

Also, in the case where all the dimensions of a given residual vectorare 0, the metadata would still indicate the length of the codebookindex as previously explained, but the length of the residual vectorcould be stored as simply 0 thereby signaling no non-zero residualelements. Recall that if a residual vector is zero, then the codebookvector is a perfect match to the input vector being compressed. Thus,the media data that is stored (one copy per user) need not include thatparticular residual vector; rather, the decoding node can simply use thecodebook index to retrieve the corresponding codebook vector to recoverthe original input vector. Given that the number of the 0 residualvectors is high when the codebook vectors truly represent the inputvectors, a substantial storage space savings can be achieved when codingthose well-represented input vectors.

Thus, as will be appreciated in light of this disclosure, zero removalcombined with the leveraging of relevant metadata can be used tofacilitate the compaction of residual vector data, and the resultingstructure in the non-zero part of the residual vectors lends itselfbetter for compression than when interspersed with zero values. Asignificant improvement in compression can be achieved. As such, storageefficiency may be increased, even for cases where the one copy per userrequirement applies. Likewise, transmission efficiency may be increased,as less media data is transmitted. As will be further appreciated inlight of this disclosure, the metadata can include, for example, datarelevant to just the encoded optimized residual vector, or both theencoded optimized residual vector and the pre-coding optimized residualvector, and even the un-optimized residual vector if so desired. In someembodiments, only the minimum amount of metadata needed to decode thegiven encoded optimized residual vectors is stored.

Huffman Coding Optimizations

As is generally known, Huffman coding refers to a technique forassigning binary codes to symbols (or vector dimensions, as the case maybe) that reduces the overall number of bits used to encode a typicalstring of those symbols. For example, if letters are used as symbols andthe frequency of occurrence of those letters in typical strings isknown, then each letter can be encoded with a fixed number of bits, suchas in ASCII codes. Huffman coding further recognizes that a moreefficient approach is to encode more frequently occurring letters (suchas vowels) with smaller bit strings, and less frequently occurringletters such as x and z with longer bit strings.

As is known, a constraint on standard Huffman coding is related to thenotion that the smaller codes assigned to more frequently occurringsymbols cannot be a prefix of the larger codes; otherwise, decodingbecomes difficult. For instance, if a code 01 is assigned for ‘a’ andcode 011 is assigned for ‘z’, then successfully decoding a string thatbegins with 011 is not possible given the lack of clarity as to whetheran ‘a’ or a ‘z’ is being decoded. So, the standard Huffman coding schemetakes each symbol and its weight (i.e., frequency of occurrence) andgenerates encodings for each symbol taking account of the weights ofeach symbol, such that higher weighted symbols have fewer bits in theirencoding. To ensure the prefix restriction is met, a Huffman encoding isnormally computed by first creating a tree of nodes or so-called treemap. This tree map generation is a processor-intensive routine that canadd greatly to computation time.

However, and as will be appreciated in light of this disclosure,metadata such as that discussed with reference to FIG. 1 c and 4a can beleveraged to avoid the need for the prefix constraint. Specifically, thecodes used to encode the optimized residual vector (media data) are notrequired to satisfy the prefix requirement, since the length of the code(metadata) is stored for decoding. For instance, and with reference tothe previous example, an un-optimized residual error vector of {4 1 0 00 5 0 0 1 −2 0} can be optimized to {100 1 101 1 10} (media data) aspreviously explained, which can in turn be Huffman coded using look-upor so-called Huffman table. The bit lengths of each dimension can berespectively represented as {3 1 0 0 0 3 0 0 1 2 0} (metadata);likewise, the length of the Huffman code is known. For instance, {100 1101 1 10} may Huffman code to, for example, 1010 (media data), which hasa length of 4 bits (metadata). Thus, the location of each dimension (orbit codes) within the overall encoded optimized residual vector is knownas are the number of bits making up each dimension. So, even if one codeis a prefix of another code, successful decoding can still be achieved.Additionally, the frequency tree map normally required to ensurecompliance with the prefix rule is not required, thereby reducingcomputation time.

To summarize, a traditional Huffman encoding process generally includes(1) symbol frequency determination, (2) sort the symbols, (3) build thetree map, and (4) assign prefix codes for the symbols. In contrast, anon-prefix Huffman encoding process according to another embodiment ofthe present disclosure may generally include (1) symbol frequencydetermination, (2) sort the symbols, and (3) assign non-prefix codes forthe symbols. Thus, a non-prefix Huffman can be used to avoid buildingthe tree map. In some such example cases, an improvement of 0.5bits/symbol or about 25% have been observed. All possible bitcombinations for each word length can be used. In one such example, thepossible codes are: 0, 1, 00, 01, 10, 11, 000, 001 . . . . Further notethat the Huffman table may also be smaller as only the keywords indescending order are needed to be in the table as the codes are alwaysthe same. Further details will now be provided in the context of exampleresidual compression schemes using Huffman-based coding schemes, withreference to FIGS. 3 b-c and 4 b -d.

FIG. 3 b is a flowchart illustrating a method for vector-wise Huffmanencoding a residual vector to further compress the residual vector data,in accordance with an embodiment of the present disclosure. As can beseen, the methodology generally includes receiving 321 an optimizedresidual vector. The methodology continues with Huffman coding 323 theresidual vector using the entire vector as input for the Huffman tableto thereby generate an encoded optimized residual vector. The Huffmancode may be prefix based or non-prefix based (prefix-free). Aspreviously noted, a Huffman coding scheme treats input data as a set ofsymbols, which in the context of a VQ-encoded compressed video streamwould naturally mean that each element or dimension of a given residualvector can be treated as a symbol. Thus, this type Huffman coding isgenerally referred to herein as element-wise Huffman (because it treatsthe residual vector input as a set of elements), and may be used in someembodiments. However, according to the embodiment shown in FIG. 3 b ,note that the entire vector representation is treated as one symbol forHuffman encoding, generally referred to herein as vector-wise Huffman(because it operates on the residual vector as a whole rather thanelements of that vector). Thus, continuing with the above example usecase, instead of using five separate keys (a key is effectively an indexinto the Huffman table) for the optimized residual vector of {4, 1, 5,1, and −2}, the individual codes are run together to provide one keythat represents the optimized residual of {1001101110}. Although thismay have the effect of bloating the Huffman table, when used incombination with non-prefix Huffman codes gives significant compressionimprovement.

FIG. 4 b shows an example vector-wise Huffman table, according to aprefix based embodiment. As can be seen, the optimized residual value istreated as a single input value or key {100 1 101 1 10} (right column oftable, and in this example case matches the Huffman code {000101} (leftcolumn of table). Thus, the optimized residual value {1001101110} can bereplaced by this Huffman code {000101} (media data).

FIG. 4 c shows an example vector-wise Huffman table, according to anon-prefix based embodiment (prefix-free). As can be seen, the optimizedresidual value is treated as a single input value or key {100 1 101 110} (right column of table), and in this example case matches non-prefixHuffman code {1010} (middle column of table). Because this coding schemeis prefix-free, the length of the Huffman code (left column of table),which in this example case is 4 bits, is included in the metadata tofacilitate subsequent decoding. Thus, the media data is {1010} and themetadata is 4. Note the Huffman code length can be recorded with othermetadata such as that shown in FIG. 1 c and 4 a, for instance, but othersuch metadata is not necessary.

FIG. 3 c is a flowchart illustrating a method for element-wiseprefix-free Huffman encoding a residual vector in accordance withanother embodiment of the present disclosure. As can be seen, themethodology includes receiving 331 an optimized residual vector, andentropy coding 333 the residual vector with non-prefix Huffman codes,thereby providing an encoded optimized residual vector. Thus, continuingwith the above example use case, given the optimized residual vector of{4, 1, 5, 1, and −2}, the individual elements are {100 1 101 1 10}.

FIG. 4 d shows an example element-wise Huffman table, according to anon-prefix based embodiment (prefix-free). As can be seen, the optimizedresidual values are treated as individual input values or keys {100 1101 1 10} (right column of table), and in this example case match theHuffman codes {1 0 01 0 11} (middle column of table). Thus, theseHuffman codes can be used to form the Huffman coded optimized residualvector {1001011}, and the optimized residual vector {100 1 101 1 10} canbe replaced by this Huffman code {1001011} (media data). Because thiscoding scheme is prefix-free, the respective bit lengths of theindividual Huffman codes (dimensions), which in this example case are{1, 1, 2, 1, 2}, are included in the metadata to facilitate subsequentdecoding. Thus, the media data is {1001011} and the metadata is {1, 1,2, 1, 2}. Note the Huffman code lengths can be recorded with othermetadata shown in FIG. 1 c and 4 a, for instance, but other suchmetadata is not necessary so long as decoding can be successfullycarried out.

As will be appreciated in light of this disclosure, given that metadatasuch as the length of the encoded optimized residual vectors (possiblyincluding their constituent elements/dimensions) are stored in themetadata file, prefix-free Huffman codes can be used instead of regularHuffman encoding. Such non-prefix Huffman codes do not have aself-describing code length, but that is ok given that the code lengthcan be determined from the metadata. Such a prefix-free Huffman codingscheme results in a significant compression benefit. Thus, the residualvectors can be losslessly compressed and stored allowing a highercompression rate. Numerous applications will be apparent in light ofthis disclosure, including multi-media applications, video processingand playback applications, compression and encoding applications,content access applications, management and transmission applications,streaming media over network applications, content and signaltransmission applications, and data stream manipulation applications, toname few examples. As will be further appreciated, the techniques may beimplemented in in any number of codecs.

Example System

FIG. 5 is a block diagram illustrating an example video contentstreaming system configured in accordance with an embodiment of thepresent disclosure. As can be seen, the system is implemented in aclient-server architecture, including a number of client nodescommunicatively coupled to content provider nod via a communicationnetwork. Such a client-server embodiment may be suitable, for example,for use in the context of an online or cloud-based DVR service thatallows a subscriber or other user (client) to record and store videocontent to a remote DVR (server) for subsequent playback at a timesuitable to the user. In this example embodiment, the content providernode includes a media server computer system communicatively coupledwith one or more storage mediums. The media server computer system isprogrammed or otherwise configured with a standard compressed videostream generator and an encoder 100 (as previously discussed herein).The storage mediums in the example case depicted include a first storagefor media data (in one embodiment, assume that the one copy per userrequirement applies to this data, although such a constraint iscertainly not required for all applications provided herein), and asecond storage for metadata and codebooks. Although the storage mediumsare shown as separate, they need not actually be separate. In stillother embodiments, the storage mediums may be implemented with adistributed database that is accessible to the content provider's mediaserver. Likewise, while one media server is shown, any number of mediaservers can be used to execute the various functionalities providedherein. In a more general sense, numerous cloud-based back-endconfigurations can be used to implement typical content providerfunctionality, which can be supplemented with the residual compressiontechniques provided herein. The client-based playback system in thisexample embodiment includes a decoder 110 (as previously discussedherein). In other example embodiments, the decoder 110 may be on theserver-side as well, although such a configuration would not be takingadvantage of the compression-based savings with respect to transmissiontime.

In operation, the content provider receives a request to record videocontent from a user via one of the client-based playback systems and thenetwork. The video content requested for recording may be, for example,a scheduled broadcast or an on-demand purchase. In any case, contentprovider generates the compressed video stream using the streamgenerator and may then initiate streaming of the content according tothe scheduled broadcast or otherwise at the requested time. In oneexample case, the compressed video stream is an MPEG-compressed videostream, although any number of compression schemes suitable forstreaming video can be used.

In addition to this conventional streaming activity carried out by thecontent provider, the content provider further acts to process theuser's request to record a copy of the content one the user's cloud DVRor other dedicated storage space available for such user requests. Tothis end, the compressed video stream is processed through the encoder100 to generate media data for storage in the media storage (user'scloud DVR) and metadata for storage in the codebook and metadatastorage, according to an embodiment of the present disclosure. Theencoding process carried out by the encoder 100 can be implemented, forexample, as previously discussed with reference to FIGS. 1 a, 2 a, and 3a, including any of the variations provided herein as will beappreciated in light of this disclosure. Recall that the media datastored can be encoded optimized residual vector data.

In response to a request for playback of video content stored in theuser's cloud DVR, the media server is further configured to stream theencoded optimized residual vector data to the user over the network. Thedecoder 110 at the user's playback system can then be used to decode theencoded optimized residual vector data back into the compressed videostream, and present that stream to the user via a display. The decodingprocess carried out by the decoder 110 can be implemented, for example,as previously discussed with reference to FIGS. 1 b, 2 b, and 3 a,including any of the variations provided herein as will be appreciatedin light of this disclosure. The client-based codebook(s) can be updatedperiodically (e.g., during off-hours), so that decoding can be executed.Metadata can also be transmitted to the client in advance, or inconjunction with transmission of the media data. As previouslyexplained, the decoder 110 may also be implemented at the contentprovider node, if so desired. In such a case, rather than streaming theencoded optimized residual vector data, the regularly compressed videostream could be streamed to the user's client.

The user's client can be implemented with any suitable computing device(e.g., laptop, desktop, tablet, smartphone, etc.) or other playbacksystem (e.g., television and set-top box arrangement, monitor and gameconsole arrangement, etc.). The network may include, for instance, alocal area network (LAN) operatively coupled to the Internet, or a cablenetwork, or a satellite network, or any other communication network overwhich video content can be transmitted. The media server can beimplemented with one or more server computers configured to receive andprocess user requests and to provision content. The storage mediums canbe any suitable non-volatile storage.

EXAMPLE EMBODIMENTS

Numerous example embodiments will be apparent, and features describedherein can be combined in any number of configurations.

Example 1 includes a method for encoding digital video content. Themethod includes: vectorizing a compressed video stream to provide aplurality of vectors, generating, by vector quantization using acodebook vector from a codebook, a residual vector for a vector includedin the plurality of vectors; removing zeros from the residual vector tocreate an optimized residual vector; entropy coding the optimizedresidual vector to produce a coded optimized residual vector; storingmetadata associated with the coded optimized residual vector, themetadata including at least one of a length of the coded optimizedresidual vector and a length of each dimension of the coded optimizedresidual vector; and storing media data associated with the codedoptimized residual vector, the media data including an indexcorresponding to the codebook vector used to generate the residualvector.

Example 2 includes the subject matter of Example 1, and further includesrepeating the method until each vector included in the plurality ofvectors has been processed into a corresponding coded optimized residualvector.

Example 3 includes the subject matter of Example 1 or 2, wherein thecompressed video stream is an MPEG-compressed video stream.

Example 4 includes the subject matter of any of the previous Examples,wherein entropy coding the optimized residual vector to produce a codedoptimized residual vector includes at least one of Arithmetic coding andHuffman coding.

Example 5 includes the subject matter of any of the previous Examples,wherein entropy coding the optimized residual vector to produce a codedoptimized residual vector includes vector-wise Huffman coding.

Example 6 includes the subject matter of any of the previous Examples,wherein entropy coding the optimized residual vector to produce a codedoptimized residual vector includes vector-wise prefix-free Huffmancoding.

Example 7 includes the subject matter of any of Examples 1 through 4,wherein entropy coding the optimized residual vector to produce a codedoptimized residual vector includes element-wise prefix-free Huffmancoding.

Example 8 includes a computer program product comprising one or morenon-transitory computer readable mediums encoded with instructions thatwhen executed by one or more processors cause a process to be carriedout for encoding digital video content, the process comprising themethod of any of Examples 1 through 7.

Example 9 includes a system for encoding digital video content, thesystem comprising: a storage facility; one or more processors configuredto: vectorize a compressed video stream to provide a plurality ofvectors; generate, by vector quantization using a codebook vector from acodebook, a residual vector for a vector included in the plurality ofvectors; remove zeros from the residual vector to create an optimizedresidual vector; entropy code the optimized residual vector to produce acoded optimized residual vector; store, in the storage facility,metadata associated with the coded optimized residual vector, themetadata including at least one of a length of the coded optimizedresidual vector and a length of each dimension of the coded optimizedresidual vector; and store, in the storage facility, media dataassociated with the coded optimized residual vector, the media dataincluding an index corresponding to the codebook vector used to generatethe residual vector.

Example 10 includes the subject matter of Example 9, wherein the one ormore processors are further configured to: repeat each of thegenerating, removing, entropy coding, and storing until each vectorincluded in the plurality of vectors has been processed into acorresponding coded optimized residual vector.

Example 11 includes the subject matter of Example 9 or 10, wherein thesystem is part of a cloud-based digital video recorder (DVR) service.Such a service may be, for example, a cable television provider or massmedia company, for instance.

Example 12 includes the subject matter of any of Examples 9 through 11,wherein the one or more processors are configured to entropy code theoptimized residual vector to produce a coded optimized residual vectorby using at least one of Arithmetic coding and Huffman coding.

Example 13 includes the subject matter of any of Examples 9 through 12,wherein entropy coding the optimized residual vector to produce a codedoptimized residual vector includes vector-wise Huffman coding.

Example 14 includes the subject matter of any of Examples 9 through 13,wherein the one or more processors are configured to entropy code theoptimized residual vector to produce a coded optimized residual vectorby using vector-wise prefix-free Huffman coding.

Example 15 includes the subject matter of any of Examples 9 through 12,wherein the one or more processors are configured to entropy code theoptimized residual vector to produce a coded optimized residual vectorby using element-wise prefix-free Huffman coding.

The foregoing description of example embodiments of the disclosure hasbeen presented for the purposes of illustration and description. It isnot intended to be exhaustive or to limit the disclosure to the preciseforms disclosed. Many modifications and variations are possible in lightof this disclosure. It is intended that the scope of the disclosure belimited not by this detailed description, but rather by the claimsappended hereto.

What is claimed is:
 1. A method for decoding digital video content, themethod comprising: receiving, by a residual decoder, media data thatincludes a coded optimized residual vector and a codebook index thatcorresponds to the coded optimized residual vector; receiving, by theresidual decoder, metadata that defines one or more characteristics ofan original residual vector that is to be decoded from the codedoptimized residual vector; decoding, by the residual decoder, the codedoptimized residual vector to produce the original residual vector;retrieving, by a vector quantization decoder, from a codebook, acodebook vector identified by the codebook index; and generating, by thevector quantization decoder, a particular original vector by adding theoriginal residual vector to the codebook vector.
 2. The method of claim1, further comprising receiving, by the vector quantization decoder, thecodebook, wherein the residual decoder does not receive the codebook. 3.The method of claim 1, wherein the metadata defines a total number ofdimensions in the original residual vector, a length of a nonzerodimension of the original residual vector, and a location of the nonzerodimension of the original residual vector.
 4. The method of claim 1,wherein decoding the coded optimized residual vector comprises addingzero-value dimensions to the coded optimized residual vector.
 5. Themethod of claim 1, wherein the particular original vector generated bythe vector quantization decoder is an approximation of an initialoriginal vector used to generate the coded optimized residual vector. 6.The method of claim 1, further comprising combining, by a reorderer, astream of discrete original vectors generated by the vector quantizationdecoder, including the particular original vector, to produce acompressed video stream.
 7. The method of claim 1, wherein the residualdecoder is configured to implement an entropy decoding scheme to producethe original residual vector.
 8. A system for decoding digital videocontent, the system comprising a storage facility and one or moreprocessors that are configured to: receive media data that includes acoded optimized residual vector and a codebook index that corresponds tothe coded optimized residual vector; receive metadata that defines oneor more characteristics of an original residual vector that is to bedecoded from the coded optimized residual vector; decode the codedoptimized residual vector to produce the original residual vector;retrieve, from a codebook, a codebook vector identified by the codebookindex; and generate a particular original vector by adding the originalresidual vector to the codebook vector.
 9. The system of claim 8,wherein the one or more processors are further configured to combine astream of discrete original vectors that includes the particularoriginal vector, to produce a compressed video stream.
 10. The system ofclaim 8, wherein the metadata defines a total number of dimensions inthe original residual vector, a length of a nonzero dimension of theoriginal residual vector, and a location of the nonzero dimension of theoriginal residual vector.
 11. The system of claim 8, wherein decodingthe coded optimized residual vector comprises adding zero-valuedimensions to the coded optimized residual vector.
 12. The system ofclaim 8, wherein the particular original vector is an approximation ofan initial original vector used to generate the coded optimized residualvector.
 13. The system of claim 8, wherein the system is part of acloud-based digital video recorder service.
 14. The system of claim 8,wherein the coded optimized residual vector is decoded using an entropydecoding scheme selected from a group consisting of Arithmetic codingand Huffman coding.
 15. The system of claim 8, wherein the codedoptimized residual vector is decoded using element-wise prefix-freeHuffman coding.
 16. A computer program product comprising one or morenon-transitory computer readable media encoded with instructions that,when executed by one or more processors, cause a process for encodingdigital video content to be carried out, the process comprising:receiving, by a residual decoder, media data that includes a codedoptimized residual vector and a codebook index that corresponds to thecoded optimized residual vector; receiving, by the residual decoder,metadata that defines one or more characteristics of an originalresidual vector that is to be decoded from the coded optimized residualvector; decoding, by the residual decoder, the coded optimized residualvector to produce the original residual vector; retrieving, by a vectorquantization decoder, from a codebook, a codebook vector identified bythe codebook index; and generating, by the vector quantization decoder,a particular original vector by adding the original residual vector tothe codebook vector.
 17. The computer program product of claim 16,wherein: the process further comprises receiving, by the vectorquantization decoder, the codebook; and the residual decoder does notreceive the codebook.
 18. The computer program product of claim 16,wherein the process further comprises combining, by a reorderer, astream of discrete original vectors generated by the vector quantizationdecoder, including the particular original vector, to produce acompressed video stream.
 19. The computer program product of claim 16,wherein the residual decoder is configured to implement vector-wiseHuffman coding to produce the original residual vector.
 20. The computerprogram product of claim 16, wherein the residual decoder is configuredto implement vector-wise prefix-free Huffman coding to produce theoriginal residual vector.